The present invention relates to data storage, and more specifically, this invention relates to using predicted input/output (I/O) patterns to manage the storage of data.
The cost per unit (e.g., Gigabyte) of storage is typically higher for higher performance (e.g., faster data access times) memory than it is for relatively lower performance memory. Thus, tiers of memory having different performance characteristics may be grouped together to form multi-tiered data storage. Thus, data may be selectively stored on different ones of the available tiers depending on criteria of the access, frequency of use, security and data recovery requirements, etc. For example, data that is frequently accessed by an application that is response time sensitive may be stored in a tier which has relatively fast data access times, e.g., such as solid state drives (SSD). However, other data that is infrequently accessed and for which a higher response time is more tolerable may be stored in a high capacity hard disk drive (HDD) which has relatively slower data access times compared to SSDs.
The capacity of a higher performance data storage tier is typically smaller than the capacity of a lower data storage tier in view of their relative prices. In order to maintain an efficient use of the higher performing, yet typically smaller, data storage tier, algorithms may be implemented to relocate data based on a temperature associated therewith. For example, “hotter” data may be migrated towards the higher storage tier (e.g., promoted), while “colder” data is migrated towards the slower tier (e.g., demoted). In the present context, the heat (e.g., “hotter” and “colder”) of data refers to the rate (e.g., frequency) at which the data is updated. Memory blocks that are considered “hot” or “hotter” tend to have a frequent update rate, while memory blocks that are considered “cold” or “colder” have an update rate which is at least slower than that of hot blocks. Additional factors may be incorporated into the determination of the relative heat of a given portion of data, e.g., such as read frequency. It follows that this promotion and demotion process of data actually relocates the data from one tier to another, and may even be performed without the knowledge of an application that is running.